const fs = require('fs');
const path = require('path');

// 诊断路由配置和跳转功能
function diagnoseRouter() {
  console.log('=== 路由诊断与修复 ===\n');
  
  // 1. 检查页面配置文件
  const mainPagesPath = 'entry/src/main/resources/base/profile/main_pages.json';
  let mainPagesConfig = null;
  
  try {
    if (fs.existsSync(mainPagesPath)) {
      const configContent = fs.readFileSync(mainPagesPath, 'utf8');
      mainPagesConfig = JSON.parse(configContent);
      console.log('页面配置文件读取成功:', mainPagesPath);
      console.log('注册的页面列表:', mainPagesConfig.src);
    } else {
      console.error('错误: 页面配置文件不存在:', mainPagesPath);
    }
  } catch (error) {
    console.error('读取页面配置文件失败:', error.message);
  }
  
  // 2. 检查PatientList.ets中的跳转逻辑
  const patientListPath = 'entry/src/main/ets/features/doctor/PatientList.ets';
  let patientListContent = null;
  
  try {
    if (fs.existsSync(patientListPath)) {
      patientListContent = fs.readFileSync(patientListPath, 'utf8');
      console.log('\nPatientList文件读取成功');
      
      // 检查导航方法
      const hasNavMethod = patientListContent.includes('navigateToPatientDetails');
      console.log(`是否包含导航方法: ${hasNavMethod ? '✓' : '✗'}`);
      
      // 检查跳转路径
      const hasCorrectPath = patientListContent.includes('/features/doctor/PatientDetail');
      console.log(`跳转路径是否正确: ${hasCorrectPath ? '✓' : '✗'}`);
      
      // 检查点击事件绑定
      const hasClickEvent = patientListContent.includes('.onClick(() => this.navigateToPatientDetails(patient))');
      console.log(`点击事件是否绑定: ${hasClickEvent ? '✓' : '✗'}`);
      
      // 修复路径问题
      if (!hasCorrectPath && patientListContent.includes('navigateToPatientDetails')) {
        console.log('\n检测到跳转路径可能不正确，尝试修复...');
        let fixedContent = patientListContent.replace(/url:\s*['"](\/?features\/doctor\/)[^'"]*['"]/, 'url: \'/features/doctor/PatientDetail\'');
        
        // 检查是否真的修改了内容
        if (fixedContent !== patientListContent) {
          fs.writeFileSync(patientListPath, fixedContent, 'utf8');
          console.log('✓ 跳转路径修复成功');
        } else {
          console.log('路径格式看起来没问题，但可能是路径本身不存在');
        }
      }
    } else {
      console.error('错误: PatientList文件不存在:', patientListPath);
    }
  } catch (error) {
    console.error('读取PatientList文件失败:', error.message);
  }
  
  // 3. 检查PatientDetail页面是否存在
  const patientDetailPath = 'entry/src/main/ets/features/doctor/PatientDetail.ets';
  const detailExists = fs.existsSync(patientDetailPath);
  console.log(`\nPatientDetail页面文件存在: ${detailExists ? '✓' : '✗'}`);
  
  // 4. 检查路径注册
  if (mainPagesConfig && mainPagesConfig.src) {
    const isRegistered = mainPagesConfig.src.some(page => page.includes('PatientDetail'));
    console.log(`PatientDetail页面已注册: ${isRegistered ? '✓' : '✗'}`);
    
    // 如果未注册，建议修复
    if (!isRegistered) {
      console.warn('警告: PatientDetail页面可能未在配置中正确注册');
    }
  }
  
  // 5. 打印诊断建议
  console.log('\n=== 诊断建议 ===');
  if (!detailExists) {
    console.error('❌ 主要问题: PatientDetail页面文件不存在');
  }
  if (mainPagesConfig && mainPagesConfig.src && !mainPagesConfig.src.some(page => page.includes('PatientDetail'))) {
    console.error('❌ 主要问题: PatientDetail页面未在配置中注册');
  }
  
  console.log('\n修复建议:');
  console.log('1. 确保PatientDetail页面文件存在');
  console.log('2. 确保页面在main_pages.json中正确注册');
  console.log('3. 确保跳转路径格式正确，使用绝对路径');
  console.log('4. 检查点击事件是否正确绑定');
}

// 执行诊断
diagnoseRouter();